package com.example.demo.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


// 这里我们将自定义拦截器加入到框架配置中 并设置拦截规则

@Configuration
public class AppConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        参数。自定义拦截器对象.拦截规则(addPathPatterns) .排除规则(excludePathPatterns)
//        拦戴路径: /** 拦截所有的url (当然，这是然是不合理，前端没有拦戴。后端的登录和注册功能，也不需要拦截)
//        就根上面说的一一样，有一些功能是不需要验证的， 所有这个排除路径就是为了这个而诞生的。将不需要拦戴的路写在这里面。
        registry.addInterceptor(new LoginIntercept())
                .addPathPatterns("/**")//拦截所有
                .excludePathPatterns("/user/login")//排除登录接口
                .excludePathPatterns("/login.html")//排除登录界面
//                .excludePathPatterns("/index.html")
                .excludePathPatterns("/user/index")
                .excludePathPatterns("/user/index2")
                .excludePathPatterns("**/*.js")// 排除页面所有静态资源
                .excludePathPatterns("**/*.css")
                .excludePathPatterns("**/*.png")
                .excludePathPatterns("**/*.jps");
    }


//    统一访问前缀添加
//    所有请求地址添加asd前缀

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
//        通过configurer提供的addPathPrefix 前缀为api
//        controller->true表示给controller中的所有(请求的url) 加上前缀
       configurer.addPathPrefix("asd", controller->true);
    }

}
